Id : assembler

Kursus / Bimbel / Aplikasi Assembler

Assembler

Formula Translation | Aplikasi CLI | Compiler | Sains - Teknik | Simulasi


Bahasa Assembly adalah bahasa pemrograman tingkat rendah.

Bahasa pemrograman (bahasa komputer/ pemrograman komputer), adalah instruksi standar untuk memerintah komputer. Bahasa pemrograman ini merupakan suatu himpunan dari aturan sintaks dan semantik yang dipakai untuk mendefinisikan program komputer. Bahasa ini memungkinkan seorang programmer dapat menentukan secara persis data mana yang akan diolah oleh komputer, bagaimana data ini akan disimpan/diteruskan, dan jenis langkah apa secara persis yang akan diambil dalam berbagai situasi.

Menurut tingkat kedekatannya dengan mesin komputer, bahasa pemrograman terdiri dari:
Bahasa Mesin, yaitu memberikan perintah kepada komputer dengan memakai kode bahasa biner, contohnya 01100101100110
Bahasa Tingkat Rendah, atau dikenal dengan istilah bahasa rakitan (bah.Inggris Assembly), yaitu memberikan perintah kepada komputer dengan memakai kode-kode singkat (kode mnemonic), contohnya kode_mesin|MOV, SUB, CMP, JMP, JGE, JL, LOOP, dsb.
Bahasa Tingkat Menengah, yaitu bahasa komputer yang memakai campuran instruksi dalam kata-kata bahasa manusia (lihat contoh Bahasa Tingkat Tinggi di bawah) dan instruksi yang bersifat simbolik, contohnya {, }, ?, <<, >>, &&, ||, dsb.
Bahasa Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal dari unsur kata-kata bahasa manusia, contohnya begin, end, if, for, while, and, or, dsb. Komputer dapat mengerti bahasa manusia itu diperlukan program compiler atau interpreter.


Sebagian besar bahasa pemrograman digolongkan sebagai Bahasa Tingkat Tinggi, hanya bahasa C yang digolongkan sebagai Bahasa Tingkat Menengah dan Assembly yang merupakan Bahasa Tingkat Rendah.



Beberapa kelebihan Assembler:

  • Hemat waktu
    memiliki banyak plugin dan modul siap pakai, yang memungkinkan pengembang untuk tidak membuang waktu menulis kode boilerplate.
  • Ketika di-compile lebih kecil ukuran
  • Lebih efisien/hemat memori
  • Lebih cepat dieksekusi
  • Merupakan representasi atas bahasa mesin
  • menggunakan simbol yang lebih dimengerti dibandingkan bila menggunakan simbol mnemonic kode mesin secara langsung.
  • Tersedianya Mekanisme lompatan yang umum yang terdapat dalam bahasa mesin (penerapan alamat memori)
  • Programmer dapat lebih mudah menggunakan fasilitas pelabelan yang terdapat pada bahasa rakitan dibandingkan menggunakan alamat memori tertentu dalam kode mnemonic.
  • Memungkinkan programmer untuk mengontrol serta memanfaatkan secara penuh kapabilitas yang terdapat atas suatu perangkat keras
  • Berbeda halnya dengan bahasa pemrograman tingkat tinggi yang memiliki banyak keterbatasan dalam pemanfaatan secara penuh suatu perangkat keras.
  • Bahasa rakitan menjanjikan tingkat unjuk kerja yang maksimum karena sifatnya yang menerjemahkan secara langsung instruksi rakitan menjadi instruksi mesin,
  • Berbeda halnya dengan bahasa pemrograman tingkat tinggi yang biasanya menerjemahkan sebuah instruksi menjadi sejumlah kode mesin.

Kursus Reguler Assembler (CLI)

Biaya Rp. 800.000;

Target Penguasaan Materi Assembler adalah:
1. Peserta memahami konstruksi program assembly
2. Peserta memahami proses kerja assembly
3. Peserta dapat menggunakan berbagai jenis mnemonik
4. Peserta dapat menggunakan assembler directive sbb:

1. ADD ADD
2. ADD WITH CARRY ADC
3. SUB WITH BORROW SBB
4. INCREMENT INC
5. DECREMENT DEC
6. MULTIPLY MUL
7. DEVIDE DIV
8. AND LOGIC ANL
9. OR LOGIC ORL
10. EXLUSIVE OR LOGIK XRL
11. DECIMAL ADJUST ACCUMULATOR DAA
12. CLEAR ACCUMULATOR CLR A
13. COMPLEMENT ACCUMULATOR CPL A
14. ROTATE ACCUMULATOR LEFT RLA
15. ROTATE ACCUMULATOR LEFT THROUGH CARRY RLCA
16. ROTATE ACCUMULATOR RIGHT RRA
17. ROTATE ACCUMULATOR RIGHT THROUGH CARRY RRCA
18. SWAPP NIBBLE WITHIN ACCUMULATOR SWAP
19. PUSH DIRECT BYTE KE STACK PUSH
20. POP DIRECT BYTE DARI STACK POP
21. JUMP IF CARRY SET C=1 JC
22. JUMP IF CARRY NOT SET C = 0 JNC
23. JUMP IF DIRECT BIT SET JB
24. JUMP IF DIRECT BIT NOT SET JNB
25. JUMP IF DIRECT BIT SET & CLEAR BIT JBC
26. ABSOLUTE CALL ACALL
27. LONG CALL LCALL
28. RETURN RET
29. RETURN FROM INTERRUPT RETI
30. ABSOLUTE JUMP AJMP
31. LONG JUMP LJMP
32. SHORT JUMP SJMP
33. JUMP INDIRECT JMP
34. JUMP IF ACCUMULATOR ZERRO JZ
35. JUMP IF ACCUMULATOT NOT ZERRO JNZ
36. COMPARE AND JUMP IF NOT EQUAL CJNE
37. DECREAMENT AND JUMP IF NOT ZERO DJNZ
38. NO OPERATION NOP


NB:
Lama Belajar 5 Hari @ 3jam
Kelas Minimal 2 Orang
Jika Membawa Laptop Sendiri Harus Sudah Terinstall Program

CONTOH APLIKASI

Algoritma adalah deretan instruksi (program) yang jelas dalam memecahkan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukkan dalam jumlah waktu yang terbatas.

.MODEL SMALL
.CODE
ORG 100H
   
AWAL:    
    MOV CL,30H                                    
    JMP PROSES
    KAL0 DB 'Ketikkan satu kalimat:$'
    KAL1 DB 13,10,'Kalimat yang diinput adalah:$'
    KAL2 DB 13,10,'Cetak dari belakang:$',13,10  
    KAL3 DB 13,10,'panjang string adalah:$' 
    KALX DB 13,10,'$'
    KAL4 DB 13,10,'Jumlah Huruf Vokal:$'  
    KAL5 DB 13,10,'Jumlah Huruf Konsonan:$'
    KATA DB 20,?,20 DUP (?)                   
    
VOKAL:  INC CL                    
        JMP PLUS                        
                        
PROSES:            
;= CETAK STRING =
    
    MOV AH,09H
    MOV DX,OFFSET KAL0
    INT 21H  
    
    
;= INPUT STRING =
    
    MOV AH,0AH
    LEA DX,KATA
    INT 21H
    
;=CETAK STRING =
    
    MOV AH,09H
    MOV DX,OFFSET KAL1
    INT 21H
    
;= CETAK VARIABEL STRING DG MODEL COMPARASI =
    
    MOV BX,OFFSET KATA+2        
    
    
CETAK:
    MOV DL,[BX]                    
    CMP DL,0DH                    
    JE BELAKANG                    
        
    MOV AH,02H
    INT 21H
    
        CMP DL,'a'
        JE VOKAL   
        CMP DL,'i'
        JE VOKAL
        CMP DL,'u'
        JE VOKAL
        CMP DL,'e'
        JE VOKAL
        CMP DL,'o'
        JE VOKAL
        CMP DL,'A'
        JE VOKAL
        CMP DL,'I'
        JE VOKAL
        CMP DL,'U'
        JE VOKAL
        CMP DL,'E'
        JE VOKAL
        CMP DL,'O'
        JE VOKAL 
        
PLUS:INC BX
     JMP CETAK    
   
;=  CETAK KATA DARI BELAKANG =

BELAKANG:MOV AH,09H
         MOV DX,OFFSET KAL2
         INT 21H   
         MOV AH,09H
         MOV DX,OFFSET KALX            
         INT 21H                     

CETAK1:    
    MOV DL,[BX]                    
    CMP DL,KATA+1                
    JE VOKAL1                   
                     
    MOV AH,02H    
    INT 21H
    DEC BX
    JMP CETAK1
      
            
;=  CETAK JUMLAH VOKAL =
    
VOKAL1:
    MOV AH,09H
    MOV DX,OFFSET KAL4
    INT 21H
    
    MOV DL,CL
    ;ADD DL,30H
    MOV AH,02H
    INT 21H 
    
                   
;= CETAK JUMLAH KONSONAN =
    
KONSONAN:
    MOV AH,09H
    MOV DX,OFFSET KAL5
    INT 21H
   
    MOV BX,OFFSET KATA+1        
    MOV DL,[BX]                 
    ADD DL,30H                    
    SUB DL,CL                    
    ADD DL,30H                    
    MOV AH,02H
    INT 21H  
    
    
;= CETAK PANJANG STRING =
    
AKHIR:
    MOV AH,09H
    MOV DX,OFFSET KAL3
    INT 21H
    
    MOV BX,OFFSET KATA+1
    MOV DL,[BX]
    ADD DL,30H
    MOV AH,02H
    INT 21H  
            
SELESAI:
    INT 20H
    
END AWAL

DEFINISI CODE

  • .MODEL SMALL:memberitahu assembler berapa memori yang akan dipakai

  • .CODE: Mendeklarasikan bahwa bagian dibawah ini adalah instruksi program

  • ORG 100h: Mengatur awal dari program

  • TData : JMP Proses

  • T_ASCII DB 13,10,’ Ini adalah tombol ASCII : $’

  • T_Extended DB 13,10,’Ini adalah tombol Extended $’

  • Proses ::Deklarasi Proses

  • MOV AH,0: Servis Input satu karakter dan memasukan nilai 0 ke AH

  • INT 16h: Menjalankan

  • PUSH AX: Menyimpan hasil dari pembacaan pada stack

  • CMP AL,00: Percabangan apakah ini karakter extended ?

  • JE Extended: Jika Betul !, Lompat ke Extended

  • ASCII: Deklarasi ASCII

  • LEA DX,T_ASCII: Mengambil alamat T_ASCII

  • MOV AH,09: Memasukan nilai 09 ke AH

  • INT 21h: Cetak kalimat !

  • POP AX: Mengambil kembali nilai AX pada stack

  • MOV DL,AL: Mengambil kode ASCII yang ditekan, Menduplikasikan isi register AL ke DL

  • MOV AH,2: Memasukan Nilai 2 ke AH

  • INT 21h: Cetak karakter !

  • CMP AL,’Q’: Apakah yang ditekan huruf ‘Q’ ?

  • JE exit: Jika Betul !, lompat ke Exit

  • CMP AL,’q’: Apakah yang ditekan huruf ‘q’ ?

  • JE exit: Jika betul !, lompat ke Exit

  • JMP Proses: Lompat ke Proses

  • Extended::Deklarasi Extended

  • LEA DX,T_Extended: Mengambil alamat T_Extended

  • MOV AH,09: Memasukan nilai 09 ke AH

  • INT 21h: Cetak dan menampilkan kalimat !

  • JMP Proses: Lompat ke Proses

  • exit: INT 20h: Pengembalian Nilai ke DOS !

  • END TData: Program Selesai !

Reff Contoh diambil dari: https://oferiachacha.blogspot.com


Portofolio Aplikasi Assembler

Contoh Aplikasi - Simulasi Penggunaan Program Assembler
	
Addressing Memory /Label
Mnemonic instruksi:
    ADD, MOV, INC dan lain-lain.
Assembler Declare :
    ORG, EQU, DB dan lain-lain.
Operand:
    MOV, JNB, JNBI
Instruction & Implementation:
    ADD A,Rn    Menambah isi register Rn dengan isi akumulator lalu disimpan di akumulator  ADD A,R1
    ADD A, direct   Menambah isi direct dengan akumulator, hasilnya disimpan di akumulator  ADD A, 30H
    ADD A, #data    Menambahkan immediate data ke akumulator    ADD A, #20H
    ADD A, @Rn  Menambahkan isi dari alamat yang ditunjuk Rn dengan akumulator  ADD A, @R1
    ADDC A, #data   Menambahkan immediate data ke akumulator dengan carry   ADDC A, #20H
    SUBB A, Rn  Kurangkan isi register Rn dari akumulator   SUBB A, R1
    INC A   Tambah isi akumulator dengan 1  INC A
    DEC A   Kurangkan isi akumulator denga 1    DEC A
    MUL AB  Kalikan isi A dengan isi B, low-byte disimpan pada akumulator, dan high byte pada B MUL AB
    DIV AB  Bagi isi A dengan isi B. Akumulator menerima hasil integer pembagian dan B menerima integer sisanya.    DIV AB
Logic Instruction  
    yaitu operasi AND (instruksi ANL),
    operasi OR (instruksi ORL),
    operasi Exclusive-OR (instruksi XRL),
    operasi clear (instruksi CLR),
    instruksi komplemen (instruksi CPL),
    operasi penggeseran kanan atau kiri (instruksi RR, RRC, RL dan RLC)
    serta operasi penukaran data (instruksi SWAP).
Data Movement and Addressing
    MOV A, Rn   Memindahkan isi register Rn ke akumulator   MOV A, R0
    MOV A,direct    Memindahkan isi direct byte ke akumulator   MOV A, 30h
    MOV A , #data   Mengisi akumulator dengan nilai data    MOV A,#20h
    MOV A, @Rn  Mengisi akumulator dengan isi dari alamat yang ditunjuk oleh Rn MOV A, @R0 
Direct Addressing
     MOV A,30H         ; isi akumulator dengan bilangan 30 heksadesimal
InDirect Addressing
    ADD A,R         ; Tambahkan isi RAM yang lokasinya ditunjukan oleh register R1 ke akumulator.
    DEC @R1        ; Kurangi satu isi RAM yang  alamatnya ditunjukan oleh register R1.
Binary Addressing  
    MOV A,#20H        ; isi akumulator dengan bilangan 20 heksadesimal
Port Addressing
    MOV P1,A            ; isi P1 dari nilai akumulator.
Bit Addressing
    SETB P1.7            ; set bit port 1.7 high ( pot 1.7 diberi nilai logika 1)  

Implementation Assembly to Microcontroller

PILIHAN JENIS KURSUS